package testes;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import org.junit.Before;
import org.junit.Test;

import alugaveis.DVD;
import alugaveis.GeneroFilme;
import exceptions.parametro.ParametroNegativoException;
import exceptions.parametro.ParametroVazioException;

public class DVDTest {

	DVD filme;

	@Before
	public void setUp() throws Exception {
		filme = new DVD("Zero Dark Thirty", 1.0, 2012, 16, true, 2, 120,
				"Americano", false, true, GeneroFilme.ACAO);
	}

	@Test
	public void testGetPreco() {
		assertEquals(3.0, filme.getPreco(), 0.1);
	}

	@Test
	public void testDVD() {
		try {
			filme = new DVD("               ", 1.0, 2012, 16, true, 2, 120,
					"Americano", false, true, GeneroFilme.ACAO);
			fail("Quebra esperada.");

		} catch (ParametroVazioException e) {
			assertEquals("O parametro nao pode ser nulo ou vazio",
					e.getMessage());

		} catch (ParametroNegativoException e) {
			assertEquals("O parametro nao pode ser nulo ou negativo.",
					e.getMessage());
		}

		try {
			filme = new DVD("Zero Dark Thirty", -1.0, 2012, 16, true, 2, 120,
					"Americano", false, true, GeneroFilme.ACAO);
			fail("Quebra esperada");
		} catch (ParametroVazioException e) {
			assertEquals("O parametro nao pode ser nulo ou vazio",
					e.getMessage());

		} catch (ParametroNegativoException e) {
			assertEquals("O parametro nao pode ser nulo ou negativo.",
					e.getMessage());
		}
	}
}
